import { IsInt, Length, MinLength } from 'class-validator';
// pnpm install class-validator class-transformer -D

/* 
  管道在Nest.js中分为两种类型，分别是转换和验证。
  转换管道将输入数据转换为所需的数据输出，
  而验证管道对输入数据进行验证。如果验证成功，数据会继续传递；
  如果验证失败，则会抛出异常。

  ValidationPipe是用于数据验证的管道，
*/


/* 
   接收 post 请求的方式是声明一个 dto class，然后通过 @Body 来取请求体来注入值。
   对它做验证要使用 ValidationPipe。

   它的实现原理是基于 class-tranformer 把参数对象转换为 dto class 的对象，
   然后通过 class-validator 基于装饰器对这个对象做验证。
*/

export class Ooo{
    @Length(3,10,{
        message({targetName, property, value, constraints}){
            console.log(targetName,property,value,constraints);
            return '名字必须在3-10个字符之间';
        }
    })
    name:string;
    @IsInt()
    age:number;
    hobbies: Array<string>;
}